package leetcode_400;

import java.util.Arrays;

/**
 *@author 周杨
 *FirstUniqueCharacterInAString_387 找到字符串第一个不重复的字符位置
 *describe:用hash监控 AC 95%
 *2018年7月12日 下午9:00:03
 */
public class FirstUniqueCharacterInAString_387 {
	
	public int firstUniqChar(String s) {
		if(s.length()==0)
            return -1;
		if(s.length()==1)
			return 0;
        int [] hash=new int[26];//表示自己出现过的位置
        //hash[s.charAt(0)-'a']=0;//这是毫无疑问的 但是要监控这个位置
        Arrays.fill(hash, -1);//-1表示从未访问过
        for(int i=0;i<s.length();++i) {
        	char now =s.charAt(i);
        	if(hash[now-'a']==-1)
        		hash[now-'a']=i;
        	else if(hash[now-'a']==-2)//已经有过
        		continue;
        	else//是0-n的数
        		hash[now-'a']=-2;
        }
        int min=s.length();
        for(int i=0;i<26;++i)
        	if(hash[i]>=0)
        		min=Math.min(min, hash[i]);
        return min==s.length()?-1:min;
        
    }
}
